package com.sdp.right.db.sys_menu.service;

import java.util.List;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdp.right.entity.SysMenu;
import com.sdp.right.entity.SysSystem;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zsp
 * @since 2023-10-11
 */
@DS(value="right")
public interface ISysMenuService extends IService<SysMenu> {
	
	/**
	 * 根据模块号，生成菜单树形列表
	 * @param systemNo
	 * @return
	 */
	List<JSONObject> queryMenuTableTree(String systemNo);
	
	/**
	 * 菜单下拉树
	 * @param systemNo
	 * @return
	 */
	JSONObject queryMenuTreeSelect(String systemNo);
	
	/**
	 * 查询所有菜单
	 * @return
	 */
	List<SysMenu> queryAllSysMenu();
	
	
	/**
	 * 根据模块号查询菜单
	 * @param systemNo
	 * @return
	 */
	List<SysMenu> querySysMenu(String systemNo);
	
	/**
	 * 根据模块号和是否使用查询菜单
	 * @param systemNo
	 * @param isUse
	 * @return
	 */
	List<SysMenu> querySysMenu(String systemNo,String isUse);
	
	/**
	 * 根据菜单内码集合查询菜单信息
	 * @param menuNoList
	 * @return
	 */
	List<SysMenu> querySysMenu(List<String> menuNoList);
	
	/**
	 * 根据菜单内码集合和是否可用查询菜单信息
	 * @param menuNoList
	 * @return
	 */
	List<SysMenu> querySysMenu(List<String> menuNoList,String isUse);
	
	/**
	 * 获取节点的父节点层级信息
	 * @param parentMenuId
	 * @return
	 */
	String queryParentMenuLevel(String parentMenuId);
	
	/**
	 * 根据菜单内码，查询此菜单的子菜单数量
	 * @param menuId
	 * @return
	 */
	int queryChildMenuCount(String menuId);
	
	/**
	 * 根据登录人信息，生成前台路由菜单树
	 * @param isRight
	 * @param accountNo
	 * @param systemNo
	 * @return
	 */
	List<JSONObject> createRouterTree(boolean isRight,String accountNo,String systemNo);
	
	/**
	 * 根基登录人和模块，查询此登录人应能看到的菜单信息 
	 * 权限过滤，角色权限过滤
	 * @param accountNo
	 * @param systemNo
	 * @return
	 */
	List<SysMenu> queryPermissionsSysMenu(String accountNo,String systemNo);
	
	/**
	 * 初始化系统默认菜单
	 * @param sysSystem
	 */
	void initSystemMenu(SysSystem sysSystem);
	
	
}
